1 # pyCalc
2 # Version
1.1
3
4 # Handle Imports

5 from
tkinter import *
6 from
tkinter import ttk
7
8 # Define Calculator Class

9
10
11 class
Calculator:
12
13     # Track calculator values
14     calc_value =
0.0
15
16     # Track Mathematical operators
17     div_trigger = False
18     mult_trigger = False
19     add_trigger = False
20     sub_trigger = False
21
22     # Function - Add up numbers
in Entry
23     def button_press(self,
value):
24         entry_val = self.number_entry.
get()
25         
if value != "AC":
26             entry_val +=
value
27             self.number_entry.delete(
0, "end")
28             self.number_entry.insert(
0, entry_val)
29         
else:
30             entry_val =
""
31             self.number_entry.delete(
0, "end")
32             self.number_entry.insert(
0, entry_val)
33
34     # Function - Check
if value is a float
35     def isfloat(self, str_val):
36             
try:
37                     
float(str_val)
38                     
return True
39             except ValueError:
40                     
return False
41
42     # Function - Perform mathematical operations
43     def math_button_press(self,
value):
44             
if self.isfloat(str(self.number_entry.get())):
45                     self.div_trigger = False
46                     self.mult_trigger = False
47                     self.add_trigger = False
48                     self.sub_trigger = False
49
50                     self.calc_value =
float(self.entry_value.get())
51                     
if value == "/":
52                             self.div_trigger = True
53                     elif
value == "*":
54                             self.mult_trigger = True
55                     elif
value == "+":
56                             self.add_trigger = True
57                     
else:
58                             self.sub_trigger = True
59
60                     self.number_entry.delete(
0, "end")
61
62     # Function - Display results to Entry
63     def equal_button_press(self):
64             
if self.div_trigger or self.mult_trigger or self.add_trigger or self.sub_trigger:
65                     
if self.add_trigger:
66                             solution = self.calc_value +
float(self.entry_value.get())
67                     elif self.sub_trigger:
68                             solution = self.calc_value -
float(self.entry_value.get())
69                     elif self.mult_trigger:
70                             solution = self.calc_value *
float(self.entry_value.get())
71                     
else:
72                             solution = self.calc_value /
float(self.entry_value.get())
73                     self.number_entry.delete(
0, "end")
74                     self.number_entry.insert(
0, solution)
75
76     # Create Tkinter Interface
77     def __init__(self, root):
78             self.entry_value = StringVar(root,
value="")
79             root.title(
'pyCalc')
80             root.geometry(
"580x330")
81             root.resizable(width=False, height=False)
82
83             # Tkinter Styling
84             style = ttk.Style()
85             style.configure(
"TButton", font="Serif 15", padding=10)
86             style.configure(
"TEntry", font="Serif 18", padding=10)
87
88             # Setup GUI
89             self.number_entry = ttk.Entry(
90                     root, textvariable=self.entry_value, width=
50)
91             self.number_entry.grid(row=
0, columnspan=4)
92
93             # Buttons - Row
1
94             self.button7 = ttk.Button(root, text=
"7",
95                                                                 command=lambda: self.button_press(
"7")).grid(row=1, column=0)
96
97             self.button8 = ttk.Button(root, text=
"8",
98                                                                 command=lambda: self.button_press(
"8")).grid(row=1, column=1)
99
100             self.button9 = ttk.Button(root, text=
"9",
101                                                                 command=lambda: self.button_press(
"9")).grid(row=1, column=2)
102
103             self.button_division = ttk.Button(root, text=
"/",
104                                                                                 command=lambda: self.math_button_press(
"/")).grid(row=1, column=3)
105
106                             # Buttons - Row
2
107             self.button4 = ttk.Button(root, text=
"4",
108                                                                 command=lambda: self.button_press(
"4")).grid(row=2, column=0)
109
110             self.button5 = ttk.Button(root, text=
"5",
111                                                                 command=lambda: self.button_press(
"5")).grid(row=2, column=1)
112
113             self.button6 = ttk.Button(root, text=
"6",
114                                                                 command=lambda: self.button_press(
"6")).grid(row=2, column=2)
115
116             self.button_multiply = ttk.Button(root, text=
"*",
117                                                                                 command=lambda: self.math_button_press(
"*")).grid(row=2, column=3)
118
119                             # Buttons - Row
3
120             self.button1 = ttk.Button(root, text=
"1",
121                                                                 command=lambda: self.button_press(
"1")).grid(row=3, column=0)
122
123             self.button2 = ttk.Button(root, text=
"2",
124                                                                 command=lambda: self.button_press(
"2")).grid(row=3, column=1)
125
126             self.button3 = ttk.Button(root, text=
"3",
127                                                                 command=lambda: self.button_press(
"3")).grid(row=3, column=2)
128
129             self.button_add = ttk.Button(root, text=
"+",
130                                                                         command=lambda: self.math_button_press(
"+")).grid(row=3, column=3)
131
132                             # Buttons - Row
4
133             self.button_clear = ttk.Button(root, text=
"AC",
134                                                                             command=lambda: self.button_press(
"AC")).grid(row=4, column=0)
135
136             self.button0 = ttk.Button(root, text=
"0",
137                                                                 command=lambda: self.button_press(
"0")).grid(row=4, column=1)
138
139             self.button_equal = ttk.Button(root, text=
"=",
140                                                                             command=lambda: self.equal_button_press()).grid(row=
4, column=2)
141
142             self.button_sub = ttk.Button(root, text=
"-",
143                                                                         command=lambda: self.math_button_press(
"-")).grid(row=4, column=3)
144
145
146 # Run application
147 root = Tk()
148 calc = Calculator(root)
149 root.mainloop()


Gõ tìm kiếm nhanh...